/*
 * @Author: wangjh wangjiahui0710@163.com
 * @Date: 2024-06-18 10:06:27
 * @LastEditors: wangjh wangjiahui0710@163.com
 * @LastEditTime: 2024-06-19 16:41:42
 * @FilePath: \cip-admin\src\pages\park\dual-prevention\reporting-of-hidden-dangers\state.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import type { WhManagerBsTbRiskHazardsControlGetPageUsingPost } from "@/genapi/wh";
import {
	whManagerBsTbRiskHazardsControlGetPageUsingPost,
	whManagerBsTbRiskHazardsHandleGetPageUsingPost,
} from "@/genapi/wh";
import { usePage } from "@/hooks/use-page";

import type DetailDialog from "./components/detail-dialog.vue";

export const [createState, injectState] = createInjectionState(
	() => {
		// 查询条件
		const filter =
			ref<WhManagerBsTbRiskHazardsControlGetPageUsingPost.Body["query"]>();

		// const page = usePage({
		//   initPageSize: 15,
		//   fetch: async ({ pageSize, currentPage }) => {
		//     //TODO无接口
		//     const { data } = await whManagerBsTbRiskHazardsControlGetPageUsingPost({
		//       data: {
		//         size: pageSize,
		//         current: currentPage,
		//         query: { ...filter.value },
		//       },
		//     });
		//     return {
		//       records: data?.records ?? [],
		//       total: data?.total ?? 0,
		//       pageSize,
		//     };
		//   },
		// });
		const page = usePage({
			initPageSize: 15,
			fetch: async ({ pageSize, currentPage }) => {
				//TODO无接口
				const { data } = await whManagerBsTbRiskHazardsHandleGetPageUsingPost({
					data: {
						size: pageSize,
						current: currentPage,
						query: { ...filter.value },
					},
				});
				return {
					records: data?.records ?? [],
					total: data?.total ?? 0,
					pageSize,
				};
			},
		});

		watchDeep(filter, () => page.execute({ currentPage: 0 }));

		// 当前选中的列表项
		const selectedList = shallowRef<typeof page.records.value>([]);

		// 表格组件
		const tableRef =
			shallowRef<InstanceType<GlobalComponents["TableWidget"]>>();

		// 详情弹窗组件
		const detailDialogRef = shallowRef<InstanceType<typeof DetailDialog>>();

		return {
			page,
			filter,
			selectedList,
			tableRef,
			detailDialogRef,
		};
	},
	{
		injectionKey: "pageState",
	},
);
